package com.platform.module.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.platform.common.core.domain.Ztree;
import com.platform.module.domain.BaseConcentratorData;
import com.platform.module.domain.LinkConcentratorMeter;
import com.platform.module.domain.LinkConcentratorValve;

import java.util.List;

/**
 * 集中器设备数据Service接口
 *
 * @author xuwei
 * @date 2020-07-15
 */
public interface IBaseConcentratorDataService extends IService<BaseConcentratorData>
{
    /**
     * 查询集中器设备数据列表
     *
     * @param baseConcentratorData 集中器设备数据
     * @return 集中器设备数据集合
     */
    public List<BaseConcentratorData> selectBaseConcentratorDataList(BaseConcentratorData baseConcentratorData);

    /**
     * 新增集中器设备数据
     *
     * @param baseConcentratorData 集中器设备数据
     * @return 结果
     */
    public int insertBaseConcentratorData(BaseConcentratorData baseConcentratorData);

    /**
     * 修改集中器设备数据
     *
     * @param baseConcentratorData 集中器设备数据
     * @return 结果
     */
    public int updateBaseConcentratorData(BaseConcentratorData baseConcentratorData);

    /**
     * 校验厂商代码是否唯一
     *
     * @param baseConcentratorData 厂商信息
     * @return 结果
     */
    public String checkConcentratorDataCodeUnique(BaseConcentratorData baseConcentratorData);

    /**
     * 批量删除集中器设备数据
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteBaseConcentratorDataByIds(String ids);


    /**
     * 导入集中器信息
     *
     * @param concentratorDataList 集中器信息列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importBaseConcentratorData(List<BaseConcentratorData> concentratorDataList, Boolean isUpdateSupport, String operName);

    /**
     * 取消授权热表
     *
     * @param concentratorMeter 集中器和热表关联信息
     * @return 结果
     */
    public int deleteAuthMeter(LinkConcentratorMeter concentratorMeter);

    /**
     * 批量取消授权热表
     *
     * @param concentratorId 集中器ID
     * @param calorimeterIds 需要删除的热表ID
     * @return 结果
     */
    public int deleteAuthMeters(String concentratorId, String calorimeterIds);

    /**
     * 批量选择授权热表
     *
     * @param concentratorId 集中器ID
     * @param calorimeterIds 需要删除的热表ID
     * @return 结果
     */
    public int insertAuthMeters(String concentratorId, String calorimeterIds);

    /**
     * 取消授权阀门
     *
     * @param concentratorValve 集中器和阀门关联信息
     * @return 结果
     */
    public int deleteAuthValve(LinkConcentratorValve concentratorValve);

    /**
     * 批量取消授权阀门
     *
     * @param concentratorId 集中器ID
     * @param valveIds 需要删除的阀门ID
     * @return 结果
     */
    public int deleteAuthValves(String concentratorId, String valveIds);

    /**
     * 批量选择授权阀门
     *
     * @param concentratorId 集中器ID
     * @param valveIds 需要删除的阀门ID
     * @return 结果
     */
    public int insertAuthValves(String concentratorId, String valveIds);

    /**
     * 查询集中器树
     *
     * @return 所有集中器信息
     */
    public List<Ztree> selectConcentratorTree();

    /**
     * 根据条件分页查询已分配室温采集器集中器列表
     *
     * @param baseConcentratorData 室温采集器信息
     * @return 室温采集器信息集合信息
     */
    public List<BaseConcentratorData> selectAllocatedSubList(BaseConcentratorData baseConcentratorData);

    /**
     * 根据条件分页查询未分配室温采集器列表
     *
     * @param baseConcentratorData 室温采集器信息
     * @return 室温采集器信息集合信息
     */
    public List<BaseConcentratorData> selectUnallocatedSubList(BaseConcentratorData baseConcentratorData);
}
